<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: navo/algorithm/nonlinear/binary/avllnk.c文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li class="current"><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>文件列表</span></a></li>
      <li><a href="globals.html"><span>全局定义</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">宏定义</a> &#124;
<a href="#func-members">函数</a>  </div>
  <div class="headertitle">
<h1>navo/algorithm/nonlinear/binary/avllnk.c文件参考</h1>  </div>
</div>
<div class="contents">

<p>Implements for AVL linked tree.  
<a href="#_details">更多...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="avllnk_8h_source.html">avllnk.h</a>&quot;</code><br/>
</div>
<p><a href="avllnk_8c_source.html">浏览该文件的源代码。</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
宏定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>AVLLNK_UPDATE_HEIGHT</b>(current, parent)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
函数</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa5b1c4b9bb54b5b6e2720310cc27d3a"></a><!-- doxytag: member="avllnk.c::avllnk_link_left" ref="afa5b1c4b9bb54b5b6e2720310cc27d3a" args="(avllnk_iter parent, avllnk_iter child)" -->
static&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_link_left</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> parent, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> child)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad33014b96fc97685016acd16571cd86d"></a><!-- doxytag: member="avllnk.c::avllnk_link_right" ref="ad33014b96fc97685016acd16571cd86d" args="(avllnk_iter parent, avllnk_iter child)" -->
static&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_link_right</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> parent, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> child)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a160c646f3919666b62061fbfc2ad3370"></a><!-- doxytag: member="avllnk.c::avllnk_link_left_unsafe" ref="a160c646f3919666b62061fbfc2ad3370" args="(avllnk_iter parent, avllnk_iter child)" -->
static&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_link_left_unsafe</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> parent, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> child)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acab6d4bbee2a0fe5c05d94b15cb599c0"></a><!-- doxytag: member="avllnk.c::avllnk_link_right_unsafe" ref="acab6d4bbee2a0fe5c05d94b15cb599c0" args="(avllnk_iter parent, avllnk_iter child)" -->
static&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_link_right_unsafe</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> parent, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> child)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93e01621e157c5c5ea818f1b7d94e5e8"></a><!-- doxytag: member="avllnk.c::avllnk_replace_child" ref="a93e01621e157c5c5ea818f1b7d94e5e8" args="(avllnk_root *root, avllnk_iter me, avllnk_iter old_child, avllnk_iter new_child)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_replace_child</b> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> me, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> old_child, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> new_child)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a473cd09925f23fa7af4cd6134d6b0434"></a><!-- doxytag: member="avllnk.c::avllnk_rotate_left" ref="a473cd09925f23fa7af4cd6134d6b0434" args="(avllnk_node *top, avllnk_root *root)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_rotate_left</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *top, <a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73e55f08d50187c83c7047eae125034b"></a><!-- doxytag: member="avllnk.c::avllnk_rotate_right" ref="a73e55f08d50187c83c7047eae125034b" args="(avllnk_node *top, avllnk_root *root)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_rotate_right</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *top, <a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab06920b11d17ffda85a5e2037e1b0abd"></a><!-- doxytag: member="avllnk.c::avllnk_double_rotate_left" ref="ab06920b11d17ffda85a5e2037e1b0abd" args="(avllnk_node *top, avllnk_root *root)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_double_rotate_left</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *top, <a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9076494687a008ba87ac9ba2002f4752"></a><!-- doxytag: member="avllnk.c::avllnk_double_rotate_right" ref="a9076494687a008ba87ac9ba2002f4752" args="(avllnk_node *top, avllnk_root *root)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_double_rotate_right</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *top, <a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a125c9e3ca56a668c39a0564dfd34a14d"></a><!-- doxytag: member="avllnk.c::avllnk_shrink_rotate_left" ref="a125c9e3ca56a668c39a0564dfd34a14d" args="(avllnk_node *top, avllnk_root *root)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_shrink_rotate_left</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *top, <a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2ef38f82e881c35f7ee5a59236f9616"></a><!-- doxytag: member="avllnk.c::avllnk_shrink_rotate_right" ref="aa2ef38f82e881c35f7ee5a59236f9616" args="(avllnk_node *top, avllnk_root *root)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>avllnk_shrink_rotate_right</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *top, <a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga8d0cac80915509c752cfceebce741037">avllnk_rebalance</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *node, <a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *parent)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">插入节点后，对树进行再平衡调整  <a href="group__AVL_xE6_xA0_x91.html#ga8d0cac80915509c752cfceebce741037"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a752d38521f70c68230b885a867ca657d"></a><!-- doxytag: member="avllnk.c::__avllnk_rebalance_on_erase" ref="a752d38521f70c68230b885a867ca657d" args="(avllnk_node *node, avllnk_node *parent, avllnk_root *root, int which)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>__avllnk_rebalance_on_erase</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *node, <a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *parent, <a class="el" href="structavllnk__root.html">avllnk_root</a> *root, int which)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#gaf66cbfca9147bf2de3109b0792242c6b">avllnk_erase</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="group__AVL_xE6_xA0_x91.html#gada1586d3a852e7d13f51543c09ac5a58">avllnk_node</a> *entry)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">移除某个节点  <a href="group__AVL_xE6_xA0_x91.html#gaf66cbfca9147bf2de3109b0792242c6b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga062945f5da72bea1f96c1e79b14ee1d6">avllnk_erases</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> begin, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> end, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga6d7aaed44e837466148513a1e9c4b055">avllnk_pr1</a> erase_handler)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">移除区域内的节点  <a href="group__AVL_xE6_xA0_x91.html#ga062945f5da72bea1f96c1e79b14ee1d6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga3f0b2fc1c3ebdcafb623a3906b168ad3">avllnk_advance</a> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> cur, int dist)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">给迭代器增加一段距离或减小一段距离  <a href="group__AVL_xE6_xA0_x91.html#ga3f0b2fc1c3ebdcafb623a3906b168ad3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga704200059c0476fc18782999861d6a14">avllnk_exist</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断一个节点是否存在于树中  <a href="group__AVL_xE6_xA0_x91.html#ga704200059c0476fc18782999861d6a14"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga0db4502b30c43020bbb5fe927c7f9d0a">avllnk_front</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到树的最左端节点  <a href="group__AVL_xE6_xA0_x91.html#ga0db4502b30c43020bbb5fe927c7f9d0a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga1634f51b55974ba696e962491ebc4eed">avllnk_back</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到树的最右端节点  <a href="group__AVL_xE6_xA0_x91.html#ga1634f51b55974ba696e962491ebc4eed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#gab06d7fe0465e53f4d47490bcdc59ccf4">avllnk_next</a> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> cur)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前节点的中序后继节点  <a href="group__AVL_xE6_xA0_x91.html#gab06d7fe0465e53f4d47490bcdc59ccf4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga7311b77daeb0f3c6b467e57207014ccc">avllnk_prev</a> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> cur)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前节点的中序前驱节点  <a href="group__AVL_xE6_xA0_x91.html#ga7311b77daeb0f3c6b467e57207014ccc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga584d9cf0d557e45fac9ac792967ecd38">avllnk_depth</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算树的深度  <a href="group__AVL_xE6_xA0_x91.html#ga584d9cf0d557e45fac9ac792967ecd38"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga0bdae474b1779392de944dbe1eee2d0c">avllnk_leafs</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算树的叶子数  <a href="group__AVL_xE6_xA0_x91.html#ga0bdae474b1779392de944dbe1eee2d0c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga9edbfa0855053c7f9bbd4d6e8a86199d">avllnk_get_info</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="structavllnk__info.html">avllnk_info</a> *info)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取树的信息，包括节点数、深度、叶子数  <a href="group__AVL_xE6_xA0_x91.html#ga9edbfa0855053c7f9bbd4d6e8a86199d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga05210b7a523aff433666c4b6c7fec4b4">avllnk_count</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取树的节点总数  <a href="group__AVL_xE6_xA0_x91.html#ga05210b7a523aff433666c4b6c7fec4b4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#gaeb29658f08fdd8c607c2f04a2dd9afd5">avllnk_distance</a> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> first, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算两个节点的迭代距离  <a href="group__AVL_xE6_xA0_x91.html#gaeb29658f08fdd8c607c2f04a2dd9afd5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#gaa2e635167aec956c163f38e293006b06">avllnk_index_of</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算迭代器的正向索引  <a href="group__AVL_xE6_xA0_x91.html#gaa2e635167aec956c163f38e293006b06"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_IMPL size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__AVL_xE6_xA0_x91.html#ga3a272f8492a0090feeb1bf4552b7535b">avllnk_reverse_index_of</a> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, <a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算迭代器的逆向索引  <a href="group__AVL_xE6_xA0_x91.html#ga3a272f8492a0090feeb1bf4552b7535b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaefb38e46d8e02132ef7391eb25c68fbe"></a><!-- doxytag: member="avllnk.c::__do_avllnk_recurse_foreach" ref="gaefb38e46d8e02132ef7391eb25c68fbe" args="(avllnk_iter cur, void(*fn)(void *), size_t offset)" -->
NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><b>__do_avllnk_recurse_foreach</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> cur, void(*fn)(void *), size_t offset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaae6acf7f7ff91bf7c916d7aca9477d7b"></a><!-- doxytag: member="avllnk.c::__do_avllnk_recurse_reverse_foreach" ref="gaae6acf7f7ff91bf7c916d7aca9477d7b" args="(avllnk_iter cur, void(*fn)(void *), size_t offset)" -->
NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><b>__do_avllnk_recurse_reverse_foreach</b> (<a class="el" href="group__AVL_xE6_xA0_x91.html#ga391ef925a6daa3822e079a4848543426">avllnk_iter</a> cur, void(*fn)(void *), size_t offset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa1d90e4e208682243f6d336ca76eebd2"></a><!-- doxytag: member="avllnk.c::__avllnk_serialize" ref="gaa1d90e4e208682243f6d336ca76eebd2" args="(avllnk_root *root, void **buf, size_t offset)" -->
NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><b>__avllnk_serialize</b> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, void **buf, size_t offset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a334067d554a8ed1b1f1237d1e8a6ae42"></a><!-- doxytag: member="avllnk.c::AVLLNK_F" ref="a334067d554a8ed1b1f1237d1e8a6ae42" args="(size_t i, size_t resv)" -->
static size_t&#160;</td><td class="memItemRight" valign="bottom"><b>AVLLNK_F</b> (size_t i, size_t resv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a663f453a0f2602feb2503bd27aafc117"></a><!-- doxytag: member="avllnk.c::AVLLNK_P" ref="a663f453a0f2602feb2503bd27aafc117" args="(size_t i, size_t d, size_t b)" -->
static size_t&#160;</td><td class="memItemRight" valign="bottom"><b>AVLLNK_P</b> (size_t i, size_t d, size_t b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae119e2c7f90a62779c9e4b18ddf9b30a"></a><!-- doxytag: member="avllnk.c::__avllnk_deserialize" ref="ae119e2c7f90a62779c9e4b18ddf9b30a" args="(avllnk_root *root, char **buf, size_t cnt, size_t offset)" -->
NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><b>__avllnk_deserialize</b> (<a class="el" href="structavllnk__root.html">avllnk_root</a> *root, char **buf, size_t cnt, size_t offset)</td></tr>
</table>
<hr/><a name="_details"></a><h2>详细描述</h2>
<div class="textblock"><p>Implements for AVL linked tree. </p>
<p>Copyright (C) 2012-2022, Henry Kwok 郭弘扬. All rights reserved </p>

<p>在文件<a class="el" href="avllnk_8c_source.html">avllnk.c</a>中定义。</p>
</div><hr/><h2>宏定义文档</h2>
<a class="anchor" id="ade78afa446fd3f86f527abc0a7f77882"></a><!-- doxytag: member="avllnk.c::AVLLNK_UPDATE_HEIGHT" ref="ade78afa446fd3f86f527abc0a7f77882" args="(current, parent)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AVLLNK_UPDATE_HEIGHT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">current, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">parent&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        uintptr_t height = <a class="code" href="group__AVL_xE6_xA0_x91.html#gaa8353ffe957c498dc63929ed50ee4cf5" title="得到节点的高度值">avllnk_height</a>(parent);   \
        <span class="keywordflow">if</span> (current == parent-&gt;left) {              \
            <span class="keywordflow">if</span> (height == AVLLNK_LH)                \
                <span class="keywordflow">break</span>;                              \
            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (height == AVLLNK_BL)           \
                <a class="code" href="group__AVL_xE6_xA0_x91.html#ga2089ba17ce26c8762a19c614a8d06555" title="设置当前节点高度为左子树高">avllnk_set_left_high</a>(parent);       \
            <span class="keywordflow">else</span>                                    \
                <a class="code" href="group__AVL_xE6_xA0_x91.html#ga7d074b83d26dcadffe3833166a9c048a" title="设置当前节点为平衡节点">avllnk_set_balanced</a>(parent);        \
        } <span class="keywordflow">else</span> {                                    \
            <span class="keywordflow">if</span> (height == AVLLNK_RH)                \
                <span class="keywordflow">break</span>;                              \
            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (height == AVLLNK_BL)           \
                <a class="code" href="group__AVL_xE6_xA0_x91.html#ga09a24ae32f166f358df10788e0f7c284" title="设置当前节点高度为右子树高">avllnk_set_right_high</a>(parent);      \
            <span class="keywordflow">else</span>                                    \
                <a class="code" href="group__AVL_xE6_xA0_x91.html#ga7d074b83d26dcadffe3833166a9c048a" title="设置当前节点为平衡节点">avllnk_set_balanced</a>(parent);        \
        }                                           \
        current = parent;                           \
        parent = <a class="code" href="group__AVL_xE6_xA0_x91.html#ga691c39005f3bf2afc370f10c4e7d98f1" title="得到父节点">avllnk_parent</a>(parent);             \
    } <span class="keywordflow">while</span> (parent)
</pre></div>
<p>在文件<a class="el" href="avllnk_8c_source.html">avllnk.c</a>第<a class="el" href="avllnk_8c_source.html#l00776">776</a>行定义。</p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:39 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
